package com.harmony.pilot.common.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 代码上下文信息
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CodeContext implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 文件路径
     */
    private String filePath;
    
    /**
     * 当前代码内容
     */
    private String code;
    
    /**
     * 光标位置（行号）
     */
    private Integer cursorLine;
    
    /**
     * 光标位置（列号）
     */
    private Integer cursorColumn;
    
    /**
     * 前缀代码（光标前的代码）
     */
    private String prefix;
    
    /**
     * 后缀代码（光标后的代码）
     */
    private String suffix;
    
    /**
     * 语言类型（cpp, c, gn等）
     */
    private String language;
    
    /**
     * 项目根路径
     */
    private String projectRoot;
    
    /**
     * GN构建文件路径
     */
    private String gnBuildFile;
    
    /**
     * 导入的头文件列表
     */
    private List<String> includes;
    
    /**
     * 当前命名空间
     */
    private String namespace;
    
    /**
     * 当前所在类名
     */
    private String className;
    
    /**
     * 当前所在函数名
     */
    private String functionName;
    
    /**
     * 附加元数据
     */
    private Map<String, Object> metadata;
}

